package com.atguigu.jxc.service;

import com.atguigu.jxc.domain.ServiceVO;
import com.atguigu.jxc.entity.Goods;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface GoodsService {


    ServiceVO getCode();


    List<Goods> getAllgoods(Integer page, Integer rows);

    /**
     * 查询所有商品信息（可根据家具家电分类、名称查询）
     *
     * @param page        第几页
     * @param rows        每页的数据数
     * @param goodsName   商品名称
     * @param goodsTypeId 商品类型id
     * @return
     */
    List<Goods> getGoodsByType(Integer page, Integer rows, String goodsName, Integer goodsTypeId);

    /**
     * 商品添加或修改
     *
     * @param goods
     * @return
     */
    ServiceVO addGoods(Goods goods);

    /**
     * 商品删除（要判断商品状态,入库、有进货和销售单据的不能删除）
     *
     * @param goodsId
     * @return
     */
    ServiceVO deleteGoods(Integer goodsId);

    /**
     * 无库存商品列表展示（可以根据商品名称或编码查询）
     *
     * @param page
     * @param rows
     * @param nameOrCode
     * @return
     */
    List<Goods> getNoInventoryQuantity(Integer page, Integer rows, String nameOrCode);

    /**
     * 有库存商品列表展示（可以根据商品名称或编码查询）
     * @param page
     * @param rows
     * @param nameOrCode
     * @return
     */
    List<Goods> getHasInventoryQuantity(Integer page, Integer rows, String nameOrCode);

    /**
     * 添加库存、修改数量或成本价
     * @param goodsId
     * @param inventoryQuantity
     * @param purchasingPrice
     * @return
     */
    ServiceVO saveStock(Integer goodsId, Integer inventoryQuantity, double purchasingPrice);

    /**
     * 删除库存（要判断商品状态 入库、有进货和销售单据的不能删除）
     * @param goodsId
     * @return
     */
    ServiceVO deleteStock(Integer goodsId);

    /**
     * 查询所有 当前库存量 小于 库存下限的商品信息
     * @return
     */
    List<Goods> listAlarm();
}
